package cn.lifeaid.service;

import java.util.List;
import java.util.Set;

import org.springframework.transaction.annotation.Transactional;

import cn.lifeaid.db.SysUser;
import cn.lifeaid.db.SysUserExample;

//使用注解式事物时加上如下标签即可
//@Transactional
public interface SysUserService {
	/**
	 * 创建用户
	 * 
	 * @param user
	 */
	public void createUser(SysUser user);

	public void updateUser(SysUser user);

	public void deleteUser(Long userId);

	public String getCredentialsSalt(SysUser user);

	/**
	 * 修改密码
	 * 
	 * @param userId
	 * @param newPassword
	 */
	public void changePassword(Long userId, String newPassword);

	SysUser findOne(Long userId);

	List<SysUser> findAll();

	List<SysUser> findByExample(SysUserExample example);

	/**
	 * 根据用户名查找用户
	 * 
	 * @param username
	 * @return
	 */
	public SysUser findByUsername(String username);

	/**
	 * 获取用户的角色id集合
	 * 
	 * @return
	 */
	public List<Long> getRoleIds(SysUser user);

	/**
	 * 根据用户名查找其角色
	 * 
	 * @param username
	 * @return
	 */
	public Set<String> findRoles(String username);

	/**
	 * 根据用户名查找其权限
	 * 
	 * @param username
	 * @return
	 */
	public Set<String> findPermissions(String username);

	/**
	 * 测试回滚
	 */
	public void testTxAop();

	/**
	 * 测试回滚2
	 */
	public void tetTxAop2();
}
